python实现直方图规定化 您所在的位置:网站首页 cv2 直方图规定化 python实现直方图规定化

python实现直方图规定化

2023-08-11 03:14| 来源: 网络整理| 查看: 265

图像增强及直方图处理简介

直方图规定化属于图像增强技术的一种

图像增强目的是改善图像的视觉效果,便于对图像的分析和处理,其包括直方图处理、空域滤波、频域滤波等方法。

直方图处理是指根据图像的灰度分布特点,经过变换和处理以改变原有直方图形状,也就是仅将灰度(色深值)做映射,新图像中像素的灰度(色深值)取决于原图像中该像素的灰度(色深值),其包括灰度图均衡化和灰度图规定化。

文章目录 图像增强及直方图处理简介一、灰度直方图规定化二、灰度直方图规定化任务分析及算法实现1.得到图像各个灰度级的累计概率2.得到灰度级的映射表

一、灰度直方图规定化

灰度直方图表达一帧图像灰度级分布情况,其横坐标是灰度值r,纵坐标是灰度值为r的像素个数或出现此灰度值的概率。

灰度直方图均衡化的基本思想是对原始图像中的像素灰度做某种映射变换,使变换后图像灰度的概率密度均匀分布,即变换后的图像是一副灰度级均匀分布的图像,这意味着图像灰度的动态范围得到了增加,从而可以提高图像的对比度。但是灰度直方图均衡化的增强效果不易控制,因为它处理结果得到的是全局均衡化的直方图,另外均衡化的图像并不一定适合人的视觉特征和一些具体应用。

二、灰度直方图规定化

灰度直方图规定化就是把图像的直方图变换成特定的非均匀分布的形状,使其能够更好地突出图像中人们感兴趣的部分,以此得到更好的增强效果。规定化是仅针对局部灰度局域进行增强,正确地选择规定化的函数可以获得比直方图均衡化更好的图像增强效果,直方图规定化本质上即寻找一个从灰度级𝑘到f(t)的映射,使新的灰度级f(t)分布接近规定化的函数。

任务分析及算法实现

处理任务:给定两张图像,将其中一张图像的灰度直方图规定为另一张图像的灰度直方图。

处理时需要用cv2.calcHist 获取灰度级像素个数信息(即直方图信息),得到一个256*1的ndarray,每个灰度级对应的像素点个数; 另外会使用cv2.LUT 进行灰度级的映射操作,最后即可完成将一张图像的灰度直方图规定为另一张图像的灰度直方图。

1.得到图像各个灰度级的累计概率

代码如下(示例):

def get_Sk(Hist): # 计算概率分布Pr sum_Hist = sum(Hist) Pr = Hist / sum_Hist # 计算累计概率Sk Sk = [] temp = 0 for n in Pr: sk = temp + n Sk.append(sk) temp = sk Sk = np.asarray(Sk) return Sk 2.得到灰度级的映射表

代码如下(示例):

def get_lut(sk1, sk2): sk1 = sk1.squeeze() sk2 = sk2.squeeze() diff = np.tile(sk1, (sk2.shape[0], 1)) a = 0 for i in np.nditer(sk2): diff[a] = np.abs(diff[a] - i) a += 1 index = np.argmin(diff, axis=0) return index.astype(np.uint8)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有